package 面向对象;

/**
 * 饿汉式单例模式
 * @author mi
 *
 */
//public class Rocket {
//	private static Rocket instance = new Rocket();
//	
//	private Rocket() {
//		
//	}
//	
//	// 公共的静态方法返回唯一的那个实例
//	public static Rocket getInstance() {
//		return instance;
//	}
//}

/**
 * 懒汉式单例模式
 * 
 */
public class Rocket {
	private static Rocket instance = null;
	
	private Rocket() {}
	/**
	 * 这方法有线程安全问题，
	 * @return
	 */
	public static Rocket getInstance() {
		if(instance == null) {
			// 三条线程都执行这里，可能创建了3个rocket对象，后期使用还是同一个
			// 多线程，并发是Java的优势特点， java中如何保证线程安全的
			// 加了锁，效率就会降低，所以推荐用饿汉式的
			instance = new Rocket();
		}
		
		return instance;
	}
}


